R包sm执行非参数单因素协方差分析
前文简介了单因素方差分析(单因素ANOVA)的非参数替代方法Kruskal-Wallis检验、Friedman检验在R语言中的执行过程,本篇将继续简介单因素协方差分析(单因素ANCOVA)的非参数替代方法。
本文使用的作图数据的网盘链接(提取码fjuq):
https://pan.baidu.com/s/1I2dX58-q5XJgexxfYTvpmg
示例数据说明
我们首先将示例数据读到R中,并从中挑选部分数据作为演示(测试数据同前文中的单因素ANCOVA,以方便二者比较)。
#读入文件,添加分组信息soil <- read.table('soil.txt', sep = '\t', header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
group <- read.table('group.txt', sep = '\t', header = TRUE, stringsAsFactors = FALSE, check.names = FALSE)
soil <- merge(soil, group, by = 'sample')
#以 shannon 指数为例,同时将分组列转换为因子变量
shannon <- soil[ ,c('sample', 'treat', 'shannon', 'days')]
shannon$treat <- factor(shannon$treat)
str(shannon)
head(shannon)
假设存在这么一个关注的问题:
我们使用来源于同一环境中的土壤进行盆栽试验(土壤类型一致),并种植了同种植株(植物类型一致)。我们将盆栽(1植株/1盆栽)分为了3组,分别在土中添加了三种化学物质(a、b、c);然后等待植物到达花期后,收集每个植株的根际土,并通过16S测序,获得了植物根际细菌群落的Alpha多样性指数,意在探究不同类型的化学物质是如何影响植物根际细菌群落的。
由于各盆栽中植株到达开花期时间并非一致,无法保证所有植株均在同一天取样观察。尽管期间并未相隔很长时间(天),理论上单因素ANOVA就可以满足需求,但我们仍然想要将各盆栽中植株到达花期的时间作为协变量去考虑(如果觉得植物生长时间相隔几天的差异可能会导致其根际菌群产生较大的变异时,尽管实际上可能有些不妥,但作为示例,请忽略这点)。
对应于上述挑选出的测试数据“shannon”:sample,试验样本名称,每一个样本即对应一个盆栽,各盆栽中土壤类型、植物类型完全相同,而且均是1植株/1盆栽;treat,在土壤中添加的三种化学物质(a、b、c),这列作为分组列,需要转换为因子变量类型,各组处理间相互独立;shannon,Alpha多样性指数中的Shannon指数,数值变量;days,各盆栽中植株的开花时间(即生长天数),这里为数值变量。
在前文中,我们已经使用了单因素ANCOVA,探究不同类型的化学物质处理下的植物根际细菌群落的Shannon指数是否存在显著不同。在这里,我们将更换为非参数的方法。
单因素协方差分析(ANCOVA)的非参数方法
ANCOVA除了要求数据服从正态分布,以及各组方差相等外,还假定回归斜率相同(回归斜率的同质性),如前文单因素ANCOVA中的方法所述。如不满足,可采用非参数的方法。(尽管本示例数据符合方差分析的前提假设,但这里仅作为演示非参数检验,故请忽略这点)
可使用sm包sm.ancova()函数完成该过程(不好意思,我实在没查到这个方法叫什么名字……)。式中,x为协变量,y为因变量,group为分组因子,method定义参考模型(详见帮助)。
#sm 包 sm.ancova(),详情使用 ?sm.ancova 查看详情library(sm)
sm.ancova(x = shannon$days, y = shannon$shannon, group = shannon$treat, model = 'equal')
R语言执行非参数单因素方差分析(Kruskal-Wallis检验、Friedman检验)